<?xml version="1.0" encoding="utf-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified">

  <!-- Schema documentation -->
  <annotation>
    <documentation>
      This schema definition defines the common reference types within
      the Content Studio schema.
    </documentation>
  </annotation>

  <!-- include and import declarations -->
  <include schemaLocation="base.xsd" />

  <!-- element declarations -->
  <element name="application" type="maml:textType">
    <annotation>
      <documentation>
        The application element describes the name of an application,
        such as Microsoft Windows or Notepad.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="database" type="maml:textType">
    <annotation>
      <documentation>
        The database element describes a database.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="fictitiousUri">
    <annotation>
      <documentation>
        The fictitiousUri element describes a fictitious internet address, 
        such as a web or email address.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
    <complexType>
      <simpleContent>
        <extension base="maml:textType">
          <attribute name="type">
            <simpleType>
              <restriction base="token">
                <enumeration value="email" />
                <enumeration value="web" />
                <enumeration value="ftp" />
              </restriction>
            </simpleType>
          </attribute>
        </extension>
      </simpleContent>
    </complexType>
  </element>

  <element name="localUri">
    <annotation>
      <documentation>
        The localUri element describes the path of some local resource.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
    <complexType>
      <simpleContent>
        <extension base="maml:textType">
          <attribute name="type">
            <simpleType>
              <restriction base="token">
                <enumeration value="absolutePath" />
                <enumeration value="relativePath" />
                <enumeration value="registryKey" />
                <enumeration value="allUsersDocAndSettings" />
                <enumeration value="currentUserDocAndSettings" />
                <enumeration value="programFiles" />
                <enumeration value="Windows" />
              </restriction>
            </simpleType>
          </attribute>
        </extension>
      </simpleContent>
    </complexType>
  </element>

  <element name="environmentVariable" type="maml:textType">
    <annotation>
      <documentation>
        The environmentVariable element describes an environment variable in an operating system.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="errorInline" type="maml:textType">
    <annotation>
      <documentation>
        The errorInline element describes an error.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="hardware" type="maml:textType">
    <annotation>
      <documentation>
        The hardware element describes a physical part of a computer system.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="literal" type="maml:textType">
    <annotation>
      <documentation>
        The literal element describes a literal value.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="markup" type="maml:textType">
    <annotation>
      <documentation>
        The markup element describes a string of markup, such as TeX or XML.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="command">
    <annotation>
      <documentation>
        The command element describes the name of an executable or other software 
        application than can be run.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
    <complexType mixed="true">
      <choice minOccurs="0" maxOccurs="unbounded">
        <element name="replaceable" type="maml:textType">
          <annotation>
            <documentation>
              The replaceable element describes a part of a command or of a
              function that must be replaced by the user.
            </documentation>
            <appinfo>
              <doc:localizable>true</doc:localizable>
              <doc:type>character</doc:type>
            </appinfo>
          </annotation>
        </element>
      </choice>
    </complexType>
  </element>

  <element name="token" type="maml:textType">
    <annotation>
      <documentation>
        The token element describes a symbol that represents a grammatical construct
        or is merely a link to something else. Tokens are particularly important 
        in lexical parsing.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="codeInline">
    <annotation>
      <documentation>
        The codeInline element describes a string of code of a particular computer language.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
    <complexType mixed="true">
      <choice minOccurs="0" maxOccurs="unbounded">
        <element name="legacyItalic" type="maml:textType" />
        <element name="codeFeaturedElement" type="maml:textType" />
      </choice>
    </complexType>

  </element>

  <element name="languageKeyword" type="maml:textType">
    <annotation>
      <documentation>
        The languageKeyword element describes a keyword of a particular computer language.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="computerOutputInline" type="maml:textType">
    <annotation>
      <documentation>
        The computerOutputInline element describes output from either a console prompt
        or from a UI form.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="ui" type="maml:textType">
    <annotation>
      <documentation>
        The ui element describes a user interface component.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="system" type="maml:textType">
    <annotation>
      <documentation>
        The system element describes any system commands (eg: command line switches, commands)
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="placeholder" type="maml:textType">
    <annotation>
      <documentation>
        This element is used as a placeholder.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="math" type="maml:textType">
    <annotation>
      <documentation>
        This element is used for any math equations, etc.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="newTerm" type="maml:textType">
    <annotation>
      <documentation>
        The newTerm element is used to introduce new technologies, etc
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>

  <element name="unmanagedCodeEntityReference" type="maml:textType">
    <annotation>
      <documentation>
        The unManagedCodeEntityReference element is used to refer to unmanaged code entities.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>character</doc:type>
      </appinfo>
    </annotation>
  </element>
	
  <!-- group declarations -->
  <group name="inlineSoftwareGroup">
    <choice>
      <element ref="maml:application" />
      <element ref="maml:database" />
      <element ref="maml:fictitiousUri" />
      <element ref="maml:localUri" />
      <element ref="maml:environmentVariable" />
      <element ref="maml:errorInline" />
      <element ref="maml:hardware" />
      <element ref="maml:literal" />
      <element ref="maml:markup" />
      <element ref="maml:command" />
      <element ref="maml:token" />
      <element ref="maml:codeInline" />
      <element ref="maml:languageKeyword" />
      <element ref="maml:computerOutputInline" />
      <element ref="maml:ui" />
      <element ref="maml:math" />
      <element ref="maml:system" />
      <element ref="maml:newTerm" />
      <element ref="maml:placeholder" />
      <element ref="maml:unmanagedCodeEntityReference" />
    </choice>
  </group>

</schema>